---
title: "R Notebook"
output: html_notebook
---

```{r}
library(tidyverse)
library(readr)
library(vroom)
setwd("C:/Users/ninoy/Desktop/VandyDS/2020spring/dbms")
df <- read_csv('C:/Users/ninoy/Desktop/VandyDS/2020spring/dbms/US_Accidents_Dec19.csv')

#summary(df)

df_sub1 <- select(df,-c(End_Lat,End_Lng,`Precipitation(in)`,`Wind_Chill(F)`))

df_nona <- na.omit(df_sub1)


#df_new <- replace_na(df,expand.grid(names(df),"/N"))


#write.csv(df, "accident_na.csv", na = "\\N")
# subsetting for easier use

#test <- read_csv('C:/Users/ninoy/Desktop/VandyDS/2020spring/dbms/us_accident/accident_0402.csv')

df_sub <- df_nona[1:50000,]

# 1
df_sss <- df_sub %>% select(Start_Time, Start_Lat, Start_Lng)

dim(unique(df_sss)) 
# (Start_Time, Start_Lat, Start_Lng) cant not be the prime key for the whole table

# 2 POI

df_poi <- df_zipout %>% select(Start_Lat, Start_Lng, Amenity, Bump, Crossing,  Give_Way , Junction  ,No_Exit , Railway ,Roundabout, Station, Stop, Traffic_Calming, Traffic_Signal, Turning_Loop)

dim(unique(df_poi)) 

dim(unique(df_poi[,1:2])) 

#Start_Lat, Start_Lng can be the prime key for the POI table

# 3

df_we <- df_zipout %>% select(Airport_Code, Weather_Timestamp ,"Temperature(F)"   ,     "Humidity(%)"          
, "Pressure(in)"          ,"Visibility(mi)"       
, "Wind_Direction"       , "Wind_Speed(mph)"      , "Weather_Condition")

dim(unique(df_we))
dim(unique(df_we[,1:2]))

unique(df_we) %>% group_by(Airport_Code, Weather_Timestamp) %>%  summarise(num = n()) %>% arrange(-num) 

# Airport_Code, Weather_Timestamp can be the prime key for the Weather table

# zipcode ~ airport code

zipair <- df_sub %>% select(Airport_Code,Zipcode)
dim(unique(zipair))
dim(unique(zipair[,2]))
#airport code is relied on zip

#4 
df_sunli <- df_sub %>% select(Airport_Code, Weather_Timestamp, Sunrise_Sunset)
dim(unique(df_sunli))
dim(unique(unique(df_sunli[,1:2])))
summary(df_sunli)

#5 
df_zip <- df_nona %>% select(Zipcode,City,County,Timezone,Airport_Code)
dim(unique(df_zip))
dim(unique(df_zip[,1]))

filter_zip <- unique(df_zip) %>% group_by(Zipcode) %>% summarise(num = n()) %>% arrange(-num) 
# top 1343

zip_filter <- filter_zip[-(1:1343),1]

df_zipout <- df_nona %>% filter(Zipcode %in% zip_filter$Zipcode)

#6
df_zip_after <- df_zipout %>% select(Zipcode,City,County,Timezone,Airport_Code)
dim(unique(df_zip_after))
dim(unique(df_zip_after[,1]))

write.csv(df_zipout, "accident_0402_v2.csv")


```

